

const jwt = require('jsonwebtoken');
const { createUser, getUserInfo, updateById } = require('../service/user.service')
const { userRegisterError } = require('../constant/err.type')
const { JWT_SECRET } = require('../config/config.default')
class UserController {
    async register(ctx, next) {
        // 获取数据
        const { user_name, password, is_admin } = ctx.request.body
        // 操作数据库 
        try {
            const res = await createUser(user_name, password, is_admin)
            // 返回客户端
            ctx.body = {
                code: 0,
                message: "注册成功！",
                result: {
                    id: res.id,
                    user_name: res.user_name
                }
            }
        } catch (err) {
            console.error(err)
            ctx.app.emit('error', userRegisterError, ctx)
        }
    }
    async login(ctx, next) {
        const { user_name } = ctx.request.body
        ctx.body = `欢迎回来！${user_name}`
        // 获取用信息、将信息记录在playload中 记录 用户名、密码、是否管理员
        try {
            const res = await getUserInfo({ user_name })
            // 剔除password熟悉，其余放到resUser中
            const { password, ...resUser } = res
            // 
            ctx.body = {
                code: 0,
                message: "用户登陆成功！",
                result: {
                    token: jwt.sign(resUser, JWT_SECRET, { expiresIn: '1d' })
                }
            }
        } catch (err) {
            console.error('用户登陆失败！', err)
        }
    }
    async changePassword(ctx, next) {
        //  获取id 密码
        const id = ctx.state.user.id
        const password = ctx.request.body.password
        // 操作数据库
        const res = await updateById({ id, password })
        // 返回结果
        if (res) {
            ctx.body = {
                code: 0,
                message: "修改密码成功！",
                result: ""
            }
        } else {
            ctx.body = {
                code: 1007,
                message: "修改密码失败！",
                result: ""
            }
        }

    }
}
module.exports = new UserController()